Skip to content

Conversation

@oria-qedma
Copy link
Contributor

This is a draft of a Qesem QF tutorial showing simulation of 2d transverse field Ising model with Qesem error mitigation combined with qiskit operator backpropagation module.
Feedback from IBM team is welcome.

FYI @assafb

@review-notebook-app
Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@CLAassistant
Copy link

CLAassistant commented Sep 30, 2025

CLA assistant check
All committers have signed the CLA.

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@valeriechiang
Copy link
Collaborator

Thank you for the draft @oria-qedma! Is it possible to scale this up to 30+ qubits?

cc: @miamico @pandasa123

@oria-qedma
Copy link
Contributor Author

Yes it is possible to run this using a larger number of qubits , we just have to play a bit with the parameters to keep the QPU runtime short enough on the one hand but still make sure the example shows some interesting behavior on the other hand.

@valeriechiang
Copy link
Collaborator

More feedback from the team: It would be interesting to include a result+depth comparison when using OBP+ QESEM versus just QESEM. Thoughts?

cc: @pandasa123 @jenglick

@abbycross
Copy link
Collaborator

Hi! I'm working on fixing the lint errors. I don't have write access to your branch, but I opened a PR on your fork, so if you can approve/merge it, that should bring those fixes into this PR. Thanks!

@miamico
Copy link
Collaborator

miamico commented Oct 3, 2025

Cool, thanks for the draft! Here's some comments for you to work on:

  • The focus here should be the QESEM circuit function. Let's emphasize it more in the title (right now the use case seems the focus rather than the tool)
  • Add more background details on the use case and the technique in the Background section. It's ok to use a few paragraph to give users a rough idea of the techniques and what the tutorial is about. Linking to the reference is good then for people who want to go into more details
  • In general, refer to published tutorials (like this recent function one) and follow the format wordings that we standardized across tutorials (details below)
  • Use only 4 steps (qiskit pattern) for the H1 sections of the tutorial. Keep naming of these consistent with our format
  • Remove this sentence under the title "Qiskit Functions are an experimental feature available only to IBM Quantum® Premium Plan, Flex Plan, and On-Prem (via IBM Quantum Platform API) Plan users. They are in preview release status and subject to change."
  • Add usage estimate and type of processor used (like Heron r2)
  • Change the requirement section to be like other published tutorials
  • Remove commented pip install cell (these instructions would be in the text cell)
  • It may be nice to use plotting utils to show the layering of the device and the choice of qubits
  • We generally don't want to use statevector simulation techniques that are not scalable for 30+ qubits examples. Replace AerSimulator in calculate_ideal_evs with an MPS or other techniques that can scale better
  • OBP will generally return a set of possibly non-commuting observables. could you expand in the text on how these are handled by the error mitigation protocol? are they mitigated "separately" or together? Anyways, adding more details on the technique (whatever is known from other public sources like the paper) would be beneficial for users that are a little more interested in the technical details

@talishnaider-qedma
Copy link

talishnaider-qedma commented Oct 5, 2025

More feedback from the team: It would be interesting to include a result+depth comparison when using OBP+ QESEM versus just QESEM. Thoughts?

cc: @pandasa123 @jenglick

Hey @valeriechiang , Thanks fo the feedback! Yeah it could be a nice comparison. Currently the notebook takes around 20 minutes of QPU time (for all the trotter steps up to 9), I'm afraid it might be intimidating for users if it were to take double the time (approximately, haven't tried it yet) let's say 50 minutes.. What do you think?

@talishnaider-qedma
Copy link

Cool, thanks for the draft! Here's some comments for you to work on:

  • The focus here should be the QESEM circuit function. Let's emphasize it more in the title (right now the use case seems the focus rather than the tool)
  • Add more background details on the use case and the technique in the Background section. It's ok to use a few paragraph to give users a rough idea of the techniques and what the tutorial is about. Linking to the reference is good then for people who want to go into more details
  • In general, refer to published tutorials (like this recent function one) and follow the format wordings that we standardized across tutorials (details below)
  • Use only 4 steps (qiskit pattern) for the H1 sections of the tutorial. Keep naming of these consistent with our format

Here I guess you meant H2 sections (if i compare to the referenced tutorial)

  • Remove this sentence under the title "Qiskit Functions are an experimental feature available only to IBM Quantum® Premium Plan, Flex Plan, and On-Prem (via IBM Quantum Platform API) Plan users. They are in preview release status and subject to change."
  • Add usage estimate and type of processor used (like Heron r2)
  • Change the requirement section to be like other published tutorials
  • Remove commented pip install cell (these instructions would be in the text cell)
  • It may be nice to use plotting utils to show the layering of the device and the choice of qubits
  • We generally don't want to use statevector simulation techniques that are not scalable for 30+ qubits examples. Replace AerSimulator in calculate_ideal_evs with an MPS or other techniques that can scale better
  • OBP will generally return a set of possibly non-commuting observables. could you expand in the text on how these are handled by the error mitigation protocol? are they mitigated "separately" or together? Anyways, adding more details on the technique (whatever is known from other public sources like the paper) would be beneficial for users that are a little more interested in the technical details

Hey, thanks for the detailed feedback. I merged the PR and updated the notebook according to a few of the comments (checked them above). I will commit the changes and continue with the other comments later this week.

@abbycross
Copy link
Collaborator

Authors: If there is an option along the right-hand side of this PR to "Allow edits from maintainers" - can you please enable it, if you don't mind? That way we can commit to your branch.

@valeriechiang
Copy link
Collaborator

More feedback from the team: It would be interesting to include a result+depth comparison when using OBP+ QESEM versus just QESEM. Thoughts?
cc: @pandasa123 @jenglick

Hey @valeriechiang , Thanks fo the feedback! Yeah it could be a nice comparison. Currently the notebook takes around 20 minutes of QPU time (for all the trotter steps up to 9), I'm afraid it might be intimidating for users if it were to take double the time (approximately, haven't tried it yet) let's say 50 minutes.. What do you think?

@talishnaider-qedma This is a good point. Maybe we can make the comparison to just QESEM optional (and add a disclaimer note that it will take ~50 minutes)? Then we can keep the overall tutorial time estimate as 20 minutes.

cc: @miamico @jenglick @pandasa123

@abbycross abbycross added this to the 2025_11_14 QDC milestone Oct 7, 2025
@oria-qedma
Copy link
Contributor Author

Authors: If there is an option along the right-hand side of this PR to "Allow edits from maintainers" - can you please enable it, if you don't mind? That way we can commit to your branch.

@abbycross I don't see such an option, maybe because I don't have admin rights to the fork? (I think maybe @assafb created the fork originally for other documentation work)

@abbycross
Copy link
Collaborator

Authors: If there is an option along the right-hand side of this PR to "Allow edits from maintainers" - can you please enable it, if you don't mind? That way we can commit to your branch.

@abbycross I don't see such an option, maybe because I don't have admin rights to the fork? (I think maybe @assafb created the fork originally for other documentation work)

Thanks for checking! - it's certainly possible that it's an admin-only option.

…ted results for 35 and 42 qubits subgraphs. Changed title of notebook. And few small changes for clarity.
@talishnaider-qedma
Copy link

More feedback from the team: It would be interesting to include a result+depth comparison when using OBP+ QESEM versus just QESEM. Thoughts?
cc: @pandasa123 @jenglick

Hey @valeriechiang , Thanks fo the feedback! Yeah it could be a nice comparison. Currently the notebook takes around 20 minutes of QPU time (for all the trotter steps up to 9), I'm afraid it might be intimidating for users if it were to take double the time (approximately, haven't tried it yet) let's say 50 minutes.. What do you think?

@talishnaider-qedma This is a good point. Maybe we can make the comparison to just QESEM optional (and add a disclaimer note that it will take ~50 minutes)? Then we can keep the overall tutorial time estimate as 20 minutes.

cc: @miamico @jenglick @pandasa123

Regarding this, I thought about it and we do show a QPU time comparison of OBP + QESEM versus just QESEM which shows a reduction of 50% in QPU time (for the 5 trotter steps circuit). As far as I understand, the OBP optimization doesn’t affect the observable results themselves, so I think the comparison might be redundant.

@lerongil lerongil moved this to In Progress in Docs Planning Oct 27, 2025
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, this is looking much better! A few more comments:

  • Rename the H2 titles for the Qiskit Patterns steps to follow our standards (e.g. "Step 1: Define circuit and observables" should be "Step 1: Map classical inputs to a quantum problem", others steps need correction too)
  • Do I understand correctly that the experiment ran is a 10q example? If that's the case, we really need to bump that number as high as reasonably possible. Something on the 30+ qubits scale would be great! If it becomes problematic for the QPU or classical runtime than it's something that we may want to discuss and highlight resource usage of the technique in the discussion
  • nevermind the comment about the layers, I think the visualization of the coupling map is good

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • I would skip the noisy backend example and go straight to hardware unless it is adding any particular insight ( I can imagine that you could show how the learnt noise model is close to the defined noise model but I don't think this is happening at the moment)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talishnaider-qedma can you take a look? Thank you!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey guys, thanks! I'm working on it will let you know when there's a new version

@abbycross
Copy link
Collaborator

I made fixes to the lint failures in this PR here, if you can approve and merge - and it should then update in this PR.

@talishnaider-qedma
Copy link

Hey @valeriechiang @miamico @abbycross I committed an updated version of the notebook, I think I addressed all of the comments above

  • Updated the steps titles according to the referenced notebook
  • I changed the working example to the 35 qubits one
  • Removed the fake backend example
    Let me know what you think :)

@abbycross
Copy link
Collaborator

@talishnaider-qedma it might be that you haven't signed the CLA yet - can you please check?

I am reviewing the tutorial now - will hope to get it in today's deploy if possible.

@abbycross abbycross mentioned this pull request Nov 7, 2025
@abbycross
Copy link
Collaborator

To complete the setup work on this tutorial, I've had to move it to a new PR (GitHub won't give me permission to work directly with this branch or in the browser, because the git diff is too big 😆 🙃 )

All work is continuing in this PR: #4203

@abbycross
Copy link
Collaborator

abbycross commented Nov 7, 2025

@talishnaider-qedma, two questions:

  1. We need a usage estimate on a specific processor family (Heron, which revision?).

  2. Also, which versions of the package installs are needed - the latest for all?

  • qiskit-ibm-catalog
  • qiskit-addon-obp and qiskit-addon-utils
  • qiskit-aer
  • matplotlib

@abbycross abbycross mentioned this pull request Nov 7, 2025
github-merge-queue bot pushed a commit that referenced this pull request Nov 7, 2025
Supersedes #4003

---------

Co-authored-by: Ori Alberton <ori.alberton@qedma.com>
@talishnaider-qedma
Copy link

@talishnaider-qedma it might be that you haven't signed the CLA yet - can you please check?

I am reviewing the tutorial now - will hope to get it in today's deploy if possible.

Hey @abbycross, you're right I signed it now

@talishnaider-qedma
Copy link

talishnaider-qedma commented Nov 9, 2025

@talishnaider-qedma, two questions:

  1. We need a usage estimate on a specific processor family (Heron, which revision?).
  2. Also, which versions of the package installs are needed - the latest for all?
  • qiskit-ibm-catalog
  • qiskit-addon-obp and qiskit-addon-utils
  • qiskit-aer
  • matplotlib
  1. The tutorial already includes the following text at the begining
image is there any more data needed? I could add this was done on ibm_fez
  1. The versions are written under "Requirements" but basically yeah the latest ones

@abbycross I think we are looking at different versions of the notebook

@abbycross
Copy link
Collaborator

Hm, the branches should have been the same?... I'll sort out the differences so that we can update it!

@abbycross
Copy link
Collaborator

Ah ok, I see now - there is a lint failure (something in the code, it seems) that is preventing this notebook in this latest version from being viewed properly. I will use the text version from the json file view to try and debug cell by cell.

@abbycross
Copy link
Collaborator

@talishnaider-qedma Ok, I've fixed the errors in the code (mostly from html tags that the build does not like) and brought over the changes in #4210.

@kaelynj kaelynj closed this Nov 10, 2025
@github-project-automation github-project-automation bot moved this from In Progress to Done in Docs Planning Nov 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

7 participants